/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mattespill;


/**
 *
 * @author Erik
 */
import java.util.ArrayList;


public class Oversikt {
    
    private TallGenerator generator = new TallGenerator();
    public Regnestykke venstre;
    public Regnestykke høyre;
    private Database db = new Database();
    public static Res res;
    private int faktor = 5; //Denne faktoren bestemmer hvor mange oppgaver som må være løst på hver level før level-økning.
    private int nivaa = 1;

    private int bruker = 0;

    private Status status = null;

    public Oversikt(){
        db.kobleTil();
    }

    private void getLevel(){
        this.nivaa = ((status.getSpill1() + status.getSpill2()) / faktor) +1;
        
        
    }
    public void genererRegnestykker(){

        if(bruker != 0){
            status = db.getStatus(bruker);
            getLevel();
            venstre = generator.genererRegnestykke(nivaa);
            høyre = generator.genererRegnestykke(nivaa);
            while(venstre.getResultat() == høyre.getResultat()){
                venstre = generator.genererRegnestykke(nivaa);
                høyre = generator.genererRegnestykke(nivaa);
            }
        }else{
            venstre = generator.genererRegnestykke(nivaa);
            høyre = generator.genererRegnestykke(nivaa);
            while(venstre.getResultat() == høyre.getResultat()){
                venstre = generator.genererRegnestykke(nivaa);
                høyre = generator.genererRegnestykke(nivaa);
            }
        }


        
    }
    public Regnestykke sjekkSvar(){
        if (venstre.getResultat() > høyre.getResultat()){
            return venstre;
        }else{
            return høyre;
        }
    }
    public void rettSvar(int spill){
        db.leggTilFullfortOppgave(bruker, spill, nivaa);// 1 krokodillespillet. 2 for tetris
        genererRegnestykker();
    }
    public boolean feilSvar(){
        boolean livIgjen = db.mistLiv(bruker);
        if(livIgjen){
            genererRegnestykker();
        }
        return livIgjen;
    }
    public Regnestykke getHøyre() {
        return høyre;
    }
    public Regnestykke getVenstre() {
        return venstre;
    }
    public boolean loggInn(String brukernavn, String passord){
        boolean loggetInn = db.loggInn(brukernavn, passord);
        if(loggetInn){
            bruker = db.getBruker(brukernavn).getBruker_id();
            if(db.getBruker(bruker).getRolle() == 0){
                status = db.getStatus(bruker);
                System.out.println(db.feilmelding);
                getLevel();
            }
        }
        return loggetInn;
    }
    public Bruker getBruker(){
        return db.getBruker(bruker);
    }
    public int getNivaa(){
        return nivaa;
    }
    public boolean nyttSpill(){
        return db.nyttSpill(bruker);
    }
    public boolean finnesStatus(){
        return db.finnesStatus(bruker); // 1 for krokodillespill
    }
    public Status getStatus(){
        return db.getStatus(bruker);
    }
    public void slettBruker(Bruker b){
        db.slettBruker(b);
    }
    public boolean leggTilBruker(String navn, String brukernavn, String passord, int rolle, int lagt_til_av){
        Bruker b = new Bruker(navn,brukernavn,passord,rolle,lagt_til_av);
        return db.leggTilBruker(b);
    }
    public ArrayList<Bruker> getElever(int bruker_id){
        return db.getElever(bruker_id);
    }
    public ArrayList<BrukerStatus> getBrukerStatus(int faglaerer_id){
        return db.getBrukerStatus(faglaerer_id);
    }
    public ArrayList<BrukerStatus> getHighscore(){
        return db.getHighscore();
    }
    public void giPenger(){
        db.giPenger(bruker);
    }
    public boolean trekkPenger(){
        return db.trekkPenger(bruker);
    }
    public boolean finnesPenger(){
        return db.finnesPenger(bruker);
    }
    public boolean nullstillHighscore(){
        boolean hei = db.nullstillHighscore();
        System.out.println(db.feilmelding);

        return hei;
    }
    public void genererTetrisHint(){
        res.getTetrisHint(nivaa);
    }
    public void genererHint(){
        res.getHint(nivaa);
    }
}
